package com.sxt.springcloud.sys.fallback;

import com.sxt.springcloud.sys.RoleClientService;
import com.sxt.sys.common.DataGridView;
import com.sxt.sys.common.ResultObj;
import com.sxt.sys.vo.RoleVo;
import feign.hystrix.FallbackFactory;
import org.springframework.stereotype.Component;

@Component
public class RoleClientFallbackService implements FallbackFactory {
    @Override
    public Object create(Throwable throwable) {
        return new RoleClientService(){

            /**
             * 查询
             *
             * @param roleVo
             */
            @Override
            public DataGridView loadAllRole(RoleVo roleVo) {
                return new DataGridView("服务降级，服务器忙，请稍后重试！调用查询所有角色方法失败");
            }

            /**
             * 添加
             *
             * @param roleVo
             */
            @Override
            public ResultObj addRole(RoleVo roleVo) {
                return ResultObj.SERVER_BUSY;
            }

            /**
             * 修改
             *
             * @param roleVo
             */
            @Override
            public ResultObj updateRole(RoleVo roleVo) {
                return ResultObj.SERVER_BUSY;
            }

            /**
             * 删除
             *
             * @param id
             */
            @Override
            public ResultObj deleteRole(Integer id) {
                return ResultObj.SERVER_BUSY;
            }

            /**
             * 根据角色ID加载菜单和权限的树的json串
             *
             * @param roleId
             */
            @Override
            public DataGridView initPermissionByRoleId(Integer roleId) {
                return new DataGridView("服务降级，服务器忙，请稍后重试！调用据角色ID加载菜单和权限的树的json串方法失败");
            }

            /**
             * 保存角色和菜单权限之间的关系
             *
             * @param rid
             * @param ids
             */
            @Override
            public ResultObj saveRolePermission(Integer rid, Integer[] ids) {
                return ResultObj.SERVER_BUSY;
            }
        };
    }
}
